#ifndef color_h__20130915_1806_44
#define color_h__20130915_1806_44

#include <memory>
using std::unique_ptr;

class Mediator;

class Color {
public:
  friend std::ostream& operator<<(std::ostream&, const Color&);
  enum {
    Black = 0,
    Blue,
    Green,
    Cyan,
    Red,
    Magenta,
    Brown,
    White,
    Light,
    Gray = Black + Light,
    Yellow = Brown + Light,
    Background = 16
  };
  friend class Mediator;
  Color();
  Color(const int& c);
  Color(const int& fg, const int& bg);
  Color& set(const int& fg, const int& bg);
private:
  struct P;
  unique_ptr<P> p;
};

#endif//color_h__20130915_1806_44
